home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 7 / Apprentice-Release7.iso / Source Code / C / Applications / Python 1.4 / twit / mactwit_stack.py < prev    next >
Encoding:
Text File  |  1996-09-26  |  3.7 KB  |  143 lines  |  [TEXT/Pyth]

  1. # A stab at a python debugger
  2. import Res
  3. import Qd
  4. import Dlg
  5. import Win
  6. import FrameWork
  7. import EasyDialogs
  8. import sys
  9. import TwitCore
  10. from mac_widgets import MT_AnyList, MT_IndexList, MT_IconTextWidget
  11.  
  12. # Our dialogs
  13. ID_STACK=513
  14. I_STACK_TITLE=1
  15. I_STACK=2
  16. I_VARS_TITLE=3
  17. I_VARS=4
  18. I_SOURCE_TITLE=5
  19. I_SOURCE=6
  20. I_EXC_TITLE=7
  21. I_EXC=8
  22. I_EXCVALUE_TITLE=9
  23. I_EXCVALUE=10
  24. I_BROWSE=11
  25. I_RULER1=12
  26. I_RULER2=13
  27. I_STATE_TITLE=14
  28. I_STATE=15
  29. I_SHOW_COMPLEX=16
  30. I_SHOW_SYSTEM=17
  31. I_EDIT=18
  32.  
  33. class StackBrowser(FrameWork.DialogWindow, TwitCore.StackBrowser):
  34.     """The stack-browser dialog - mac-dependent part"""
  35.     def open(self):
  36.         FrameWork.DialogWindow.open(self, ID_STACK)
  37.         self.SetPort()
  38.         Qd.TextFont(3)
  39.         Qd.TextSize(9)
  40.         self.mi_open()
  41.         
  42.     def create_items(self):
  43.         """Create the lists we need"""
  44.         tp, h, rect = self.wid.GetDialogItem(I_STACK)
  45.         self.stack = MT_IndexList(self.wid, rect, 2)
  46.         tp, h, rect = self.wid.GetDialogItem(I_VARS)
  47.         self.vars = MT_AnyList(self.wid, rect, 2)
  48.         tp, h, rect = self.wid.GetDialogItem(I_SOURCE)
  49.         self.source = MT_IconTextWidget(self.wid, rect)
  50.         
  51.     def setsource(self, msg):
  52.         tp, h, rect = self.wid.GetDialogItem(I_SOURCE_TITLE)
  53.         if self.cur_source:
  54.             Dlg.SetDialogItemText(h, self.cur_source)
  55.         else:
  56.             Dlg.SetDialogItemText(h, msg)
  57.         self.source.setcontent(self.cur_source)
  58.         
  59.     def setexception(self, name, value):
  60.         if name == None:
  61.             self.wid.HideDialogItem(I_EXC)
  62.             self.wid.HideDialogItem(I_EXC_TITLE)
  63.             value = None
  64.         else:
  65.             self.wid.ShowDialogItem(I_EXC)
  66.             self.wid.ShowDialogItem(I_EXC_TITLE)
  67.             tp, h, rect = self.wid.GetDialogItem(I_EXC)
  68.             Dlg.SetDialogItemText(h, name)
  69.         if value == None:
  70.             self.wid.HideDialogItem(I_EXCVALUE)
  71.             self.wid.HideDialogItem(I_EXCVALUE_TITLE)
  72.         else:
  73.             self.wid.ShowDialogItem(I_EXCVALUE)
  74.             self.wid.ShowDialogItem(I_EXCVALUE_TITLE)
  75.             tp, h, rect = self.wid.GetDialogItem(I_EXCVALUE)
  76.             Dlg.SetDialogItemText(h, value)
  77.         
  78.     def setprogramstate(self, msg):
  79.         tp, h, rect = self.wid.GetDialogItem(I_STATE)
  80.         Dlg.SetDialogItemText(h, msg)
  81.         
  82.     def do_itemhit(self, item, event):
  83.         (what, message, when, where, modifiers) = event
  84.         Qd.SetPort(self.wid)
  85.         where = Qd.GlobalToLocal(where)
  86.                 
  87.         if item == I_STACK:
  88.             new_stackitem, double = self.stack.click(where, 0)
  89.             self.click_stack(new_stackitem)
  90.         elif item == I_VARS:
  91.             new_var, double = self.vars.click(where, 0)
  92.             if double:
  93.                 self.click_var(new_var)
  94.         elif item == I_SOURCE:
  95.             lineno, inborder = self.source.click(where, 0)
  96.             if lineno <> None and lineno >= 0:
  97.                 self.click_source(lineno, inborder)
  98.         elif item == I_BROWSE:
  99.             self.click_browse()
  100.         elif item == I_SHOW_COMPLEX:
  101.             self.show_complex = not self.show_complex
  102.             self.setup_frame()
  103.         elif item == I_SHOW_SYSTEM:
  104.             self.show_system = not self.show_system
  105.             self.setup_frame()
  106.         elif item == I_EDIT:
  107.             self.click_edit()
  108.             
  109.     def set_var_buttons(self):
  110.         tp, h, rect = self.wid.GetDialogItem(I_SHOW_COMPLEX)
  111.         h.as_Control().SetControlValue(self.show_complex)
  112.         tp, h, rect = self.wid.GetDialogItem(I_SHOW_SYSTEM)
  113.         h.as_Control().SetControlValue(self.show_system)
  114.     
  115.     def do_rawupdate(self, window, event):
  116.         Qd.SetPort(self.wid)
  117.         rgn = self.wid.GetWindowPort().visRgn
  118.         tp, h, rect = self.wid.GetDialogItem(I_RULER1)
  119.         Qd.MoveTo(rect[0], rect[1])
  120.         Qd.LineTo(rect[2], rect[1])
  121.         tp, h, rect = self.wid.GetDialogItem(I_RULER2)
  122.         Qd.MoveTo(rect[0], rect[1])
  123.         Qd.LineTo(rect[2], rect[1])
  124.         self.stack.update(rgn)
  125.         self.vars.update(rgn)
  126.         self.source.update(rgn)
  127.  
  128.     def force_redraw(self):
  129.         Qd.SetPort(self.wid)
  130.         Win.InvalRgn(self.wid.GetWindowPort().visRgn)
  131.         
  132.     def do_activate(self, activate, event):
  133.         self.stack.activate(activate)
  134.         self.vars.activate(activate)
  135.         self.source.activate(activate)
  136.                 
  137.     def close(self):
  138.         self.source.close()
  139.         del self.stack
  140.         del self.vars
  141.         del self.source
  142.         self.do_postclose()
  143.